/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package facadeBonita;


import businessData.MasterPlan;
import businessData.Order;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Andrés Felipe
 */
public interface InterfaceBonita {
    
    List<List<String>> getAllPymes();
    
    List<String> getCustomerInformation(String customerIdentification, long pymeIdentification);
    
    List<List<String>> getProductsInformation(long pymeIdentification, int toSell);
    
    void newCustomer (String identification, long pymeIndentification, String name, String adress, String email, String phone);
    
    List<String> getEmailPyme (long pymeIdentification);
    
    long getIdRequest (String customerIdentification,long pymeIdentification);
    
    double getQuotePrice (long idRequest, ArrayList<ArrayList<Object>> customerRecuest );
    
    List<List<String>> getCustomerPlan (ArrayList<ArrayList<Object>> customerRecuest , long pymeIdentication);
    
    Date getDateDeliver (List<List<String>> customerPlan); 
    
    boolean verifyDate (long idRequest);
    
    MasterPlan createProductsPlan(List<List<String>> customerRequestS, long pymeIdentification);
    
    List<List<String>> assignSupplyPlanVariable(MasterPlan masterPlan);
    
    List<List<String>> assignProductionPlanVariable(MasterPlan masterPlan);
    
    List<List<String>> assignDistributionPlanVariable(MasterPlan masterPlan);
    
    void saveCustomerPurchase(String customerIdentification,long pymeIdentification,double total,Date date, ArrayList<ArrayList<Object>> customerRequest);
    
    void deleteCustomer(String customerIdentification, long pymeIdentification);
    
    List<String> getSupplierInformation(long supplierIdentification);
    
    void addSupplierToPyme(long pymeIdentification, long supplierIdentification);
    
    List<List<String>> getSuppliersInformationOfPyme(long pymeIdentification);
    
    void saveDataMaster (int idProduct, String dataMaster);
    
    void addNewProduct (String nombre,String dataMaster,double price, double quantity, double capacity,Date productionAbleDate, double productionTime, int toSell , long pymeIdentification, String typeMaterial);
    
    List<String> findAllMaterials ();
    
    List<String> findSuppliersByMaterial(String material, long pymeIdentification);
    
    void saveDefaultSupplier (String supplier , long pymeIdentification); 
    
    List<List<Order>> combineSuppliersOrder(List<Order> sourceList);
    
    List<List<String>> splitBatch(List<List<Order>> sourceList);
    
    List<List<Order>> notifySuppliers(List<List<String>> sourceList);
    
    void saveNonWorkingDays(long pymeIdentification, List<List<Date>> dates);
    
    void deleteNonWorkingDays(long pymeIdentification, String date);
    
    List<List<Date>> findAllNonWorkDay(long pymeIdentification);
    
    List<List<String>> addProductionListOrders(ArrayList<ArrayList<Object>> customerRequest, long pymeIdendification);
    
    public List<List<String>> getRequestsToMRP(boolean timer, long pymeId);
    
    public List<List<String>> caculateProductionBatches(List<List<String>> productionRequest);
    
    public List<String> findAllSuppliers();
    
    public List<String> findAllClients(long pymeIdentification);
    
    public String getNamePyme(long pymeIdentification);
    
    public Integer getIdPyme(String namePyme);
}
